Firehose のサードパーティ連携を利用してDatadogへのログ転送を試してみた
AWSチームのすずきです。
2020年7月にHTTPエンドポイントへのデータ配信をサポートした Kinesis Data Firehoseを利用して、 DataDog (Log Management) へのログ転送を試す機会がありましたので、紹介させていただきます。
設定手順
Datadog の Webコンソール で案内された手順で設定を行いました。
- 「Logs」→「GettingStart」→「Cloud」→「AWS」→「Kinesis Firehose」
当画面で確認できるDatadogのAPIキー、Firehoseの設定で必要となるので控えます。
AWS設定
S3
Kinesis Data Firehose と同一リージョンに、ログ出力先となる S3 バケットを設置しました。
S3の設定はデフォルトで利用しました。
S3のストレージ費用が問題となる規模で利用する場合、ログ保存要件に応じたライフサイクル設定をおすすめします。
Firehose
配信ストリーム作成
- Datadog Logs へのログ転送を設定した Kinesis Data Firehose 配信ストリームを新規に作成しました。
配信先指定
- Third-party service provider として「Datadog」を選択しました。
- エンドポイントは「Datadog US」、APIキーはDatadogのコンソールで案内された情報を反映しました。
- S3は、Firehose用に用意したバケットを指定。 Backup と Failed Data を 保存する指定としました。
詳細設定
- バッファ設定はデフォルトとしました。
- Firehoseが利用するIAMロールは新規発行とました。
配信テスト
Datadog設定を実施した Firehose 配信ストリームに テストデータを登録しました。
Datadog設定
Log Explorer
Firehoseのバッファ時間(デフォルト60秒)を経過したログデータが、Log Explorer で確認可能になります。
任意のログレコードを指定すると、ログの詳細が確認可能です。
Add Column
フィルタや集計対象として利用する項目の指定を行います。
数値の範囲指定でフィルタする項目は「Add Mesure」、セレクトボックスでフィルタする項目は「Add facet」を指定します。
「Mesure」「facet」の設定後、新たに登録されたログが、指定した任意の条件でフィルタ処理する事が可能になります。
Export Monitor
指定した条件を元に「Monitor」設定を作成します。
価格(price)が200以上のログを 部署(sector)単位で発生件数を数え、過去5分間に10件以上を超過した場合を検出するクエリ条件を試してみました。
logs("@price:>=200").index("*").rollup("count").by("@sector").last("5m") > 10
設定後、Firehose のサンプルデータを再度投入し、「Monitor」画面で可視化できる事を確認できました。
料金
東京リージョンのFirehose経由でDatadogへのログ転送を行った場合の月額費用を、 1KBのログレコードが継続して発生する環境で試算してみました。
ログ件数(毎分) | ログ件数(月間) | 容量(月間MB) | Datadog(件数) | Datadog(容量) | Firehose(容量) | S3(ストレージ) | 費用合計(Datadog+AWS) |
---|---|---|---|---|---|---|---|
1 | 43200 | 43.2 | $0.11 | $0.00 | $0.00 | $0.00 | $0.12 |
10 | 432000 | 432 | $1.10 | $0.04 | $0.08 | $0.01 | $1.23 |
100 | 4320000 | 4320 | $11.02 | $0.43 | $0.78 | $0.11 | $12.33 |
1000 | 43200000 | 43200 | $110.16 | $4.32 | $7.78 | $1.08 | $123.34 |
10000 | 432000000 | 432000 | $1,101.60 | $43.20 | $77.76 | $10.80 | $1,233.36 |
※試算前提
- Datadog は Pay-As-You-Go のオンデマンド単価(100万イベント毎に$2.55)
- ログの保持期間、Datadogは15日、S3は30日で計算
- S3に保存されるログの圧縮率は75%
- S3のAPI課金は計算外
同条件で、CloudWatch Logs を利用した場合の試算は以下の通りでした。
ログ件数(1分あたり) | ログ件数(30日あたり) | 収集 | 保存 | 分析 | 費用合計(CloudWatchLogs) |
---|---|---|---|---|---|
1 | 43200 | $0.033 | $0.000 | $0.001 | $0.034 |
10 | 432000 | $0.328 | $0.004 | $0.008 | $0.340 |
100 | 4320000 | $3.283 | $0.036 | $0.082 | $3.401 |
1000 | 43200000 | $32.832 | $0.356 | $0.821 | $34.009 |
10000 | 432000000 | $328.320 | $3.564 | $8.208 | $340.092 |
※試算前提
- ログの保持期間は30日
- 保存されるログの圧縮率は75%
- 保存されたログは分析のため CloudWatch Logs Insights で10回スキャンされる
まとめ
Firehose のHTTPエンドポイントサポートを利用して、Datadog Logs にログを簡単に転送する事が可能となりました。
Datadog Logsへのログ転送、CloudWatch LogsとLambda で実現している場合、Firehoseへの切替によりAWS利用費の節約や、Lambdaの管理が削減できる事が期待できます。
今回はサンプルデータを用いた簡易な検証でしたが、GuardDutyログの集約管理の実現などについても、おって紹介させて頂きたいと思います。